home *** CD-ROM | disk | FTP | other *** search
-
- buf[0] = '\0';
-
- for (;;) {
- if (rc == buf_size) {
- memcpy(buf,buf+buf_size/2,buf_size/2);
- rc = buf_size/2;
- }
-
- cc = i_read(stream,buf+rc,buf_size-rc,timeout);
-
- if (cc == 0) { /* normal EOF */
- eof = TRUE;
- fclose(stream);
- break;
- } else if (cc == -1) { /* abnormal EOF */
- if (i_read_errno == EBADF) {
- tcl_error("bad spawn_id (process died earlier?)");
- } else {
- tcl_error("i_read(spawn_id=%d): %s",
- stream,sys_errlist[errno]);
- fclose(stream);
- }
- error = TRUE;
- break;
- } else if (cc == -2) break; /* timed out */
-
- oldrc = rc;
- rc += cc;
-
- if (loguser) {
- fwrite(buf+oldrc,1,cc,stdout);
- fflush(stdout);
- }
-
- rc -= rm_nulls(&buf[oldrc],cc);
- buf[rc] = '\0';
-
- for (p=pairs;p<&pairs[pairs_inuse];p++) {
- if (p->type == keyword) continue;
- if (patternmatch(buf,p->pattern)) {
- match = TRUE;
- goto done;
- }
- }
- }
-
- Listing 8
-
-